﻿using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;

namespace RA_WebSite.Models
{
    public class RushInitializer : DropCreateDatabaseIfModelChanges<RAContext>
    {
        protected override void Seed(RAContext context)
        {
            // Inizializzo i gradi di ruggine rispetto alla tabella dello standard D610-1
            var gradiDiRuggine = new List<GradoDiRuggine>
                {
                    new GradoDiRuggine {LimiteInferiore = -999, LimiteSuperiore = 0.01},
                    new GradoDiRuggine {LimiteInferiore = 0.01, LimiteSuperiore = 0.03},
                    new GradoDiRuggine {LimiteInferiore = 0.03, LimiteSuperiore = 0.1},
                    new GradoDiRuggine {LimiteInferiore = 0.1, LimiteSuperiore = 0.3},
                    new GradoDiRuggine {LimiteInferiore = 0.3, LimiteSuperiore = 1.0},
                    new GradoDiRuggine {LimiteInferiore = 1.0, LimiteSuperiore = 3.0},
                    new GradoDiRuggine {LimiteInferiore = 3.0, LimiteSuperiore = 10.0},
                    new GradoDiRuggine {LimiteInferiore = 10.0, LimiteSuperiore = 16.0},
                    new GradoDiRuggine {LimiteInferiore = 16.0, LimiteSuperiore = 33.0},
                    new GradoDiRuggine {LimiteInferiore = 33.0, LimiteSuperiore = 50.0},
                    new GradoDiRuggine {LimiteInferiore = 50.0, LimiteSuperiore = 999}

                };
            gradiDiRuggine.ForEach(s => context.GradoDiRuggines.Add(s));
            context.SaveChanges();

            // Inizializzo i tipo di ruggine rispetto alla tabello dello standard D610-1
            var tipiDiRuggine = new List<TipoDiRuggine>
                {
                    new TipoDiRuggine {Tipo = "S", TipoEsteso = "Spot"},
                    new TipoDiRuggine {Tipo = "G", TipoEsteso = "General"},
                    new TipoDiRuggine {Tipo = "P", TipoEsteso = "Pinpoint"},
                    new TipoDiRuggine {Tipo = "NA", TipoEsteso = "Non calcolabile"},
                };
            tipiDiRuggine.ForEach(s => context.TipoDiRuggines.Add(s));
            context.SaveChanges();

            // Creo un utente fittizio per la simulazione
            var utenti = new List<Utente>
                {
                    new Utente {Username = "mario.rossi@rush.com", Password = "password"}
                };
            utenti.ForEach(s => context.Utentes.Add(s));
            context.SaveChanges();

            // Creo un prdine fittizio per la simulazione
            var ordini = new List<Ordine>
                {
                    new Ordine {Descrizione = "Simulazione nuova pittura per l'azienda TuttiColori Spa", Inizio = new DateTime(2013,4,1), Utente_Id = 1}
                };
            ordini.ForEach(s => context.Ordines.Add(s));
            context.SaveChanges();

            // Creo una pittura fittizia per la simulazione
            var pitture = new List<Pittura>
                {
                    new Pittura {Descrizione = "Pittura a base di resina rossa", Ordine_Id = 1},
                    new Pittura {Descrizione = "Pittura ad olio isolante", Ordine_Id = 1}
                };
            pitture.ForEach(s => context.Pitturas.Add(s));
            context.SaveChanges();

            // Creo una campione fittizia per la simulazione
            var campioni = new List<Campione>
                {
                    new Campione {Pittura_Id = 1, Descrizione = "Pennellata debole"},
                    new Campione {Pittura_Id = 2, Descrizione = "Pennellata forte"}
                };
            campioni.ForEach(s => context.Campiones.Add(s));
            context.SaveChanges();








        }
    }
}